export default function createRequest(options) {
	return new Promise((resolve) => {
		const token = uni.getStorageSync('token')
		if (options.needLogin !== false && !token) {
			uni.showToast({
				title: "请先登录",
				icon: "none"
			})
			setTimeout(() => {
				uni.navigateTo({
					url: "/pages/login/login"
				})
			}, 1500)
			return
		}
		const baseUrl = 'http://localhost:3000'
		const url = `${baseUrl}${options.url}`

		const header = {
			token
		}
		let showLoading = false
		if (options.loading !== false) {
			showLoading = true
			uni.showLoading({
				title: "正在加载",
				mask: true
			})
		}
		uni.request({
			url,
			method: options.method || 'GET',
			timeout: options.timeout || 20000,
			header,
			data: options.data || {},
			success: (res) => {
				// 根据我们后端接口的设计
				// code=0 成功
				// code=-1 异常
				// code=403 教务系统cookie失效，要重新登录
				// 其他异常

				res = res.data
				switch (res.code) {
					// 请求没问题
					case 0:
						return resolve(res)
						// 异常信息
					case -1:
						uni.showToast({
							title: res.msg,
							icon: 'none'
						})
						break;
						// 登录已失效，需要重新登录
					case 403:
						uni.showToast({
							title: '登录已失效，请重新登录',
							icon: 'none'
						})
						setTimeout(() => {
							uni.redirectTo({
								url: '/pages/login/login',
							})
						}, 1000);
						break;
						// 其他异常
					default:
						uni.showToast({
							title: '服务开小差啦！1',
							icon: 'none'
						})
						break
				}
			},
			fail: (err) => {
				console.log(err);
				uni.showToast({
					title: '服务开小差啦！2',
					icon: 'none'
				})
			},
			complete() {
				// 如果有loading，就隐藏
				if (showLoading) {
					uni.hideLoading()
				}
			}
		})
	})
}